import pandas as pd
from json import load
from sqlalchemy import create_engine
import plotly.express as px
# Pour affichage dynamique des graphiques Plotly sur GitHub
import plotly.offline as po
po.init_notebook_mode()
fichierConfig = "../../bdd/config.json"
with open(fichierConfig) as fichier:
config = load(fichier)["mysql"]
engine = create_engine('mysql+' + config["connector"] + '://' + config["user"] + ":" + config["password"] + "@" + config["host"] + ":" + config["port"] + "/" + config["bdd"], echo=True)
requeteCollecteurs = pd.read_sql_query("SELECT * FROM collecteur JOIN tri ON collecteur.idTri = tri.id LEFT JOIN marque ON collecteur.idMarque = marque.id LEFT JOIN categorie ON collecteur.idCategorie = categorie.id;", engine)
requeteDecheteries = pd.read_sql_query("SELECT * FROM decheterie;", engine)
dataCollecteurs = pd.DataFrame(requeteCollecteurs)
dataDecheteries = pd.DataFrame(requeteDecheteries)
# Renommage des colonnes types pour éviter les confusions (et les erreurs)
cols = []
isTri = True
for column in dataCollecteurs.columns:
if column == "type":
if isTri:
cols.append("typeTri")
isTri = False
else:
cols.append("typeCollecteur")
else:
cols.append(column)
dataCollecteurs.columns = cols
# Rajout d'une colonne villes par association code INSEE - ville depuis un dictionnaire (pour faciliter les affichages)
dictVilles = { "06029": "Cannes", "06030": "Le Cannet", "06079": "Mandelieu-la-Napoule", "06085": "Mougins", "06138": "Théoule-sur-Mer"}
for i in dataCollecteurs.index:
dataCollecteurs.loc[i, "ville"] = dictVilles[dataCollecteurs.loc[i, "codeInsee"]]
dataCollecteurs
# Jeu de couleurs de la CACPL
dictVillesCouleurs = {"Cannes": "#7bc3b7", "Le Cannet": "#528238", "Mandelieu-la-Napoule": "#fab55a", "Mougins": "#e84e2c", "Théoule-sur-Mer": "#507999"}
# Jeu de couleurs utilisé pour les icones des collecteurs de la carte
dictTrisCouleurs = {"om": "#bf3932", "papier": "#3e8ecc", "emballage": "#c0b132", "verre": "#35c032", "vêtement": "#31a9be"}
fig = px.histogram(dataCollecteurs, x="ville", color="ville", width=900, color_discrete_map=dictVillesCouleurs, title="Nombre de sites de collecteurs par ville")
fig.update_xaxes(categoryorder="total descending")
# Utilisation de l'histogramme
# Ne marche pas si des valeurs non définies
fig = px.histogram(dataCollecteurs, x="ville", y="quantite", histfunc="sum", color="ville", color_discrete_map=dictVillesCouleurs, width=900, title="Nombre de collecteurs par ville")
fig.update_xaxes(categoryorder="total descending")
# Utilisation du diagramme à barres
dataCollecteursQuantiteVille = dataCollecteurs.groupby(by=["ville"])["quantite"].sum().reset_index(name="quantite")
fig = px.bar(dataCollecteursQuantiteVille, x="ville", y="quantite", color="ville", width=900, color_discrete_map=dictVillesCouleurs, title="Nombre de collecteurs par ville")
fig.update_xaxes(categoryorder="total descending")
dataSitesCollecteursQuantiteMarque = dataCollecteurs.groupby(by=["nom"])["quantite"].count().reset_index()
fig = px.bar(dataSitesCollecteursQuantiteMarque, x="nom", y="quantite", color="nom", width=900, title="Nombre de sites de collecteurs par marque")
fig.update_xaxes(categoryorder="total descending")
fig = px.histogram(dataCollecteurs, x="nom", color="ville", color_discrete_map=dictVillesCouleurs, width=900, title="Nombre de sites de collecteurs par marque et par ville")
fig.update_xaxes(categoryorder="total descending")
fig = px.histogram(dataCollecteurs, x="nom", color="ville", color_discrete_map=dictVillesCouleurs, width=900, title="Nombre de sites de collecteurs par marque et par ville")
fig.update_xaxes(categoryorder="total descending")
fig.update_layout(barmode='group')
dataCollecteursQuantiteMarque = dataCollecteurs.groupby(by=["nom"])["quantite"].sum().reset_index(name="quantite")
fig = px.bar(dataCollecteursQuantiteMarque, x="nom", y="quantite", color="nom", width=900, title="Nombre de collecteurs par marque")
fig.update_xaxes(categoryorder="total descending")
fig = px.histogram(dataCollecteurs, x="nom", y="quantite", histfunc="sum", color="ville", color_discrete_map=dictVillesCouleurs, width=900, title="Nombre de collecteurs par marque et par ville")
fig.update_xaxes(categoryorder="total descending")
fig = px.histogram(dataCollecteurs, x="nom", y="quantite", histfunc="sum", color="ville", color_discrete_map=dictVillesCouleurs, width=900, title="Nombre de collecteurs par marque et par ville")
fig.update_xaxes(categoryorder="total descending")
fig.update_layout(barmode='group')
dataSitesCollecteursQuantiteVolume = dataCollecteurs.groupby(by=["volume"]).count().reset_index()
px.bar(dataSitesCollecteursQuantiteVolume, x="volume", y="quantite", color="volume", width=900, title="Nombre de sites de collecteurs par volume (en L)")
fig = px.histogram(dataCollecteurs, x="volume", color="ville", color_discrete_map=dictVillesCouleurs, width=900, title="Nombre de sites de collecteurs par volume (en L) et par ville")
fig.update_xaxes(categoryorder="total descending")
fig = px.histogram(dataCollecteurs, x="volume", color="ville", color_discrete_map=dictVillesCouleurs, width=900, title="Nombre de sites de collecteurs par volume (en L) et par ville")
fig.update_xaxes(categoryorder="total descending")
fig.update_layout(barmode='group')
fig = px.bar(dataSitesCollecteursQuantiteVolume, x="volume", y="quantite", color="volume", width=900, title="Nombre de sites de collecteurs par volume (en L)")
fig.update_xaxes(type="category")
dataSitesCollecteursQuantiteVolumeVille = dataCollecteurs.groupby(by=["volume", "ville"]).count().reset_index()
fig = px.bar(dataSitesCollecteursQuantiteVolumeVille, x="volume", y="quantite", color="ville", color_discrete_map=dictVillesCouleurs, width=900, title="Nombre de sites de collecteurs par volume (en L)")
fig.update_xaxes(type="category")
fig = px.bar(dataSitesCollecteursQuantiteVolumeVille, x="volume", y="quantite", color="ville", color_discrete_map=dictVillesCouleurs, width=900, title="Nombre de sites de collecteurs par volume (en L)")
fig.update_xaxes(type="category")
fig.update_layout(barmode='group')
dataCollecteursQuantiteVolume = dataCollecteurs.groupby(by=["volume"])["quantite"].sum().reset_index(name="quantite")
px.bar(dataCollecteursQuantiteVolume, x="volume", y="quantite", color="volume", width=900, title="Nombre de collecteurs par volume (en L)")
dataCollecteursQuantiteVolumeVille = dataCollecteurs.groupby(by=["volume", "ville"])["quantite"].sum().reset_index(name="quantite")
fig = px.bar(dataCollecteursQuantiteVolumeVille, x="volume", y="quantite", color="ville", width=900, color_discrete_map=dictVillesCouleurs, title="Nombre de collecteurs par volume (en L) et par ville")
fig.update_xaxes(categoryorder="total descending")
fig = px.bar(dataCollecteursQuantiteVolumeVille, x="volume", y="quantite", color="ville", width=900, color_discrete_map=dictVillesCouleurs, title="Nombre de collecteurs par volume (en L) et par ville")
fig.update_xaxes(categoryorder="total descending")
fig.update_layout(barmode='group')
fig = px.bar(dataCollecteursQuantiteVolume, x="volume", y="quantite", color="volume", width=900, title="Nombre de collecteurs par volume (en L)")
fig.update_xaxes(type="category")
fig = px.bar(dataCollecteursQuantiteVolumeVille, x="volume", y="quantite", color="ville", color_discrete_map=dictVillesCouleurs, width=900, title="Nombre de collecteurs par volume (en L)")
fig.update_xaxes(type="category")
fig = px.bar(dataCollecteursQuantiteVolumeVille, x="volume", y="quantite", color="ville", color_discrete_map=dictVillesCouleurs, width=900, title="Nombre de collecteurs par volume (en L)")
fig.update_xaxes(type="category")
fig.update_layout(barmode='group')
dataSitesCollecteursQuantiteType = dataCollecteurs.groupby(by=["typeCollecteur"])["quantite"].count().reset_index()
fig = px.bar(dataSitesCollecteursQuantiteType, x="typeCollecteur", y="quantite", color="typeCollecteur", width=900, title="Nombre de sites de collecteurs par type de collecteur")
fig.update_xaxes(categoryorder="total descending")
fig = px.histogram(dataCollecteurs, x="typeCollecteur", color="ville", width=900, color_discrete_map=dictVillesCouleurs, title="Nombre de sites de collecteurs par type de collecteur et par ville")
fig.update_xaxes(categoryorder="total descending")
fig = px.histogram(dataCollecteurs, x="typeCollecteur", color="ville", width=900, color_discrete_map=dictVillesCouleurs, title="Nombre de sites de collecteurs par type de collecteur et par ville")
fig.update_xaxes(categoryorder="total descending")
fig.update_layout(barmode='group')
dataCollecteursQuantiteType = dataCollecteurs.groupby(by=["typeCollecteur"])["quantite"].sum().reset_index(name="quantite")
fig = px.bar(dataCollecteursQuantiteType, x="typeCollecteur", y="quantite", color="typeCollecteur", width=900, title="Nombre de collecteurs par type de collecteur")
fig.update_xaxes(categoryorder="total descending")
fig = px.histogram(dataCollecteurs, x="typeCollecteur", y="quantite", histfunc="sum", color="ville", color_discrete_map=dictVillesCouleurs, width=900, title="Nombre de collecteurs par type de collecteur et par ville")
fig.update_xaxes(categoryorder="total descending")
fig = px.histogram(dataCollecteurs, x="typeCollecteur", y="quantite", histfunc="sum", color="ville", color_discrete_map=dictVillesCouleurs, width=900, title="Nombre de collecteurs par type de collecteur et par ville")
fig.update_xaxes(categoryorder="total descending")
fig.update_layout(barmode='group')
fig = px.histogram(dataCollecteurs, x="typeTri", color="typeTri", width=900, title="Nombre de sites de collecteurs par type de tri")
fig.update_xaxes(categoryorder="total descending")
fig = px.histogram(dataCollecteurs, x="typeTri", color="ville", color_discrete_map=dictVillesCouleurs, width=900, title="Nombre de sites de collecteurs par type de tri et par ville")
fig.update_xaxes(categoryorder="total descending")
fig = px.histogram(dataCollecteurs, x="typeTri", color="ville", color_discrete_map=dictVillesCouleurs, width=900, title="Nombre de sites de collecteurs par type de tri et par ville")
fig.update_xaxes(categoryorder="total descending")
fig.update_layout(barmode='group')
fig = px.histogram(dataCollecteurs, x="typeTri", y="quantite", histfunc="sum", color="typeTri", color_discrete_map=dictTrisCouleurs, width=900, title="Nombre de collecteurs par type de tri")
fig.update_xaxes(categoryorder="total descending")
fig = px.histogram(dataCollecteurs, x="typeTri", y="quantite", histfunc="sum", color="ville", color_discrete_map=dictVillesCouleurs, width=900, title="Nombre de collecteurs par type de tri et par ville")
fig.update_xaxes(categoryorder="total descending")
fig = px.histogram(dataCollecteurs, x="typeTri", y="quantite", histfunc="sum", color="ville", color_discrete_map=dictVillesCouleurs, width=900, title="Nombre de collecteurs par type de tri et par ville")
fig.update_xaxes(categoryorder="total descending")
fig.update_layout(barmode='group')
fig = px.histogram(dataCollecteurs, x="ville", color="typeTri", color_discrete_map=dictTrisCouleurs, width=900, title="Nombre de sites de collecteurs par ville et par type de tri")
fig.update_xaxes(categoryorder="total descending")
fig.update_layout(barmode='group')
fig = px.histogram(dataCollecteurs, x="ville", y="quantite", histfunc="sum", color="typeTri", color_discrete_map=dictTrisCouleurs, width=900, title="Nombre de collecteurs par ville et par type de tri")
fig.update_xaxes(categoryorder="total descending")
fig.update_layout(barmode='group')
px.pie(dataCollecteurs, names="ville", color="ville", color_discrete_map=dictVillesCouleurs, title="Répartition des sites de collecteurs par ville")
px.pie(dataCollecteursQuantiteVille, values="quantite", names="ville", color="ville", color_discrete_map=dictVillesCouleurs, title="Répartition des collecteurs par ville")
px.pie(dataCollecteurs, names="typeTri", color="typeTri", color_discrete_map=dictTrisCouleurs, title="Répartition des sites de collecteurs par type de tri")
dataCollecteursQuantiteTri = dataCollecteurs.groupby(by=["typeTri"])["quantite"].sum().reset_index(name="quantite")
px.pie(dataCollecteursQuantiteTri, values="quantite", names="typeTri", color="typeTri", color_discrete_map=dictTrisCouleurs, title="Répartition des collecteurs par type de tri")
px.sunburst(dataCollecteurs, path=["ville", "typeTri"], color="ville", color_discrete_map=dictVillesCouleurs, title="Répartition des sites de collecteurs par ville et par type de tri")
px.sunburst(dataCollecteurs, path=["typeTri", "ville"], color="typeTri", color_discrete_map=dictTrisCouleurs, title="Répartition des sites de collecteurs par type de tri et par ville")
px.sunburst(dataCollecteurs, path=["ville", "typeTri"], values="quantite", color="ville", color_discrete_map=dictVillesCouleurs, title="Répartition des collecteurs par ville et par type de tri")
px.sunburst(dataCollecteurs, path=["typeTri", "ville"], values="quantite", color="typeTri", color_discrete_map=dictTrisCouleurs, title="Répartition des collecteurs par type de tri et par ville")